83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode list = head;
/*
此时list对象相当于head对象的引用,所以改变list指针会改变head,
因为它们指针是同一个,而改变val则不会改变head
*/
while(list != null && list.next != null){
if(list.next.val == list.val)
list.next =list.next.next;//相应的会改变head
else
list = list.next; //不会改变head,但会改变list,用一次减少一个元素
}
return head; //所以return list 是错误的
}
}
/*
ArrayList<Integer> arrayList =new ArrayList<>();
for (int i = 0; i < 5; i++) {
arrayList.add(i);
}
ArrayList<Integer> bArrayList =arrayList;
System.out.println(bArrayList);
bArrayList.add(5);
System.out.println(arrayList);
System.out.println(bArrayList);
*/